import numpy as np
import matplotlib.pyplot as plt

# 定义基尼系数计算函数
def gini_coefficient(p):
    return 1 - np.sum(p ** 2)

# 生成概率分布 P(y_i)
n = 100  # 类别的数量
p_values = np.linspace(0.01, 0.99, n)  # 生成0.01到0.99的概率分布

# 计算基尼系数
gini_values = np.array([gini_coefficient(np.array([pi, 1 - pi])) for pi in p_values])

# 绘制图像
plt.figure(figsize=(10, 6))
plt.plot(p_values, gini_values, label='Gini Coefficient', color='orange')
plt.title('Gini Coefficient vs. Probability')
plt.xlabel('Probability (p)')
plt.ylabel('Gini Coefficient (G)')
plt.axhline(y=0, color='k', linestyle='--', lw=0.7)
plt.axhline(y=1, color='k', linestyle='--', lw=0.7)
plt.grid(True)
plt.legend()
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.show()